import {
    colorTheme
} from './theme'
/**
 * 获取一个颜色。使图上节点颜色尽量不重复
 * 优先取没有的颜色。
 */
class RandColor {
    constructor(graph) {
        this.graph = graph
    }

    clear() {
        this.colorTheme = colorTheme[this.graph.theme].node.series
        this.colors = new Array(this.colorTheme.length - 4)
        for (let i = 0; i < this.colors.length; i++) {
            this.colors[i] = 0
        }
    }

    /**
     * 初始化已用的颜色
     * @param {Array} usedColors 已有的颜色
     */
    initialize(usedColors) {
        for (let i in usedColors) {
            if (i >= 0 && i < this.colors.length) {
                this.colors[usedColors[i]]++
            }
        }
    }

    nextColor() {
        let minIndex = 0
        let half = this.colors.length / 2
        for (let i = 1; i < this.colors.length; i++) {
            let ix = Math.floor(i * 2 % this.colors.length) + Math.floor(i / half)
            if (this.colors[ix] < this.colors[minIndex]) {
                minIndex = ix
            }
        }
        this.colors[minIndex]++
        return minIndex
    }
}

export default RandColor